import java.util.*;
// 1:无需package
// 2: 类名必须Main, 不可修改
//
//public class Main {
//    public static void main(String[] args) {
//        Scanner scan = new Scanner(System.in);
//        int n=scan.nextInt();
//        int m=scan.nextInt();
//        int q=scan.nextInt();
//
//        int[][] g=new int[n+1][n+1];
//
//        for(int i=0;i<g.length;i++)
//        Arrays.fill(g[i],0x3f3f3f3f);
//
//
//        while(m-->0){
//            int a=scan.nextInt();
//            int b=scan.nextInt();
//            g[a][b]=1;
//            g[b][a]=1;
//        }
//
//        for(int k=0;k<=n;k++){
//            g[k][k]=0;
//            for(int i=0;i<=n;i++){
//                for(int j=0;j<=n;j++){
//                    if(g[i][k]!=0x3f3f3f3f&&g[k][j]!=0x3f3f3f3f){
//                        g[i][j]=Math.min(g[i][k]+g[k][j],g[i][j]);
//                    }
//                }
//            }
//        }
//
//        float ret=0;
//        int j=q;
//        while(j-->0){
//            int start=scan.nextInt();
//            int count=scan.nextInt();
//
//
//            for(int i=0;i<=n;i++){
//                if(g[start][i]<=count) ret++;
//            }
//        }
//
//        ret/=q;
//        System.out.printf("%.2f\n",ret);
//        //在此输入您的代码...
//        scan.close();
//    }
//}
//
//


// 1:无需package
// 2: 类名必须Main, 不可修改
//import java.util.*;
//public class Main {
//    public static void main(String[] args) {
//        Scanner scan = new Scanner(System.in);
//        int mod=(int)1e9+7;
//
//
//        int n=scan.nextInt();
//        int[][] arr=new int[n][3];
//
//        for(int i=0;i<n;i++){
//            for(int j=0;j<3;j++){
//                arr[i][j]=scan.nextInt();
//            }
//        }
//
//
//
//        Arrays.sort(arr,(a,b)->{
//            if(a[0]==b[0]) return b[1]-a[1];
//            return b[0]-a[0];
//        });
//
//        Treearr[] treearrs=new Treearr[3];
//        for(int i=0;i<3;i++) treearrs[i]=new Treearr(100000);
//
//        int ans=0;
//
//
//        for (int[] a : arr) {
//            int l = a[0];
//            int w = a[1];
//            int c = a[2];
//            for (int i = 0; i < 3; i++) {
//                if (c == i) continue; // 相同颜色被排除掉
//                ans=(ans+treearrs[i].preSum(w-1))%mod; // 累加答案
//            }
//            treearrs[c].add(w, 1); // 更新树状数组
//        }
//        System.out.println(ans);
//
//
//
//
//        //在此输入您的代码...
//        scan.close();
//    }
//}
//
//
//
//class Treearr{
//
//    int[] tree;
//    int size;
//
//
//    public Treearr(int n){
//        size=n;
//        tree=new int[n+1];
//
//    }
//
//
//    public int lowbit(int i){
//        return i&(-i);
//    }
//
//    public void add(int i,int val){
//        while(i<=size){
//            tree[i]+=val;
//            i+=lowbit(i);
//        }
//
//    }
//
//    public int preSum(int i){
//        int sum=0;
//        while(i>0){
//            sum+=tree[i];
//            i-=lowbit(i);
//
//        }
//        return sum;
//    }
//
//}
//
//import java.util.*;
//public class Main {
//
//    static ArrayList<Integer> path;
//    static ArrayList<ArrayList<Integer>> list;
//
//    public static void main(String[] args) {
//        Scanner scan = new Scanner(System.in);
//
//
//
//        int t=scan.nextInt();
//        while (t-->0){
//            path=new ArrayList<>();
//            list=new ArrayList<>();
//
//            int n=scan.nextInt();
//            int[] arr=new int[n];
//
//            int sum=0;
//
//            for(int i=0;i<n;i++){
//                arr[i]=scan.nextInt();
//                sum+=arr[i];
//            }
//
//            dfs(arr,0);
//
//            int ret=0;
//
//            for(int i=0;i<list.size();i++){
//                List<Integer> l=list.get(i);
//                int lsum=0;
//
//
//                for(Integer num:l){
//
//                    lsum+=num;
//
//                }
//
//                boolean f1=(sum%2==0);
//                boolean f2=(lsum%2==0);
//
//                if(f2&&f1){
//                    ret++;
//                }
//            }
//
//            System.out.println(ret);
//
//        }
//
//
//    }
//
//
//    public static void dfs(int[] arr,int pos){
//        int n=arr.length;
//
//
//        list.add(new ArrayList<>(path));
//
//
//
//        for(int i=pos;i<n;i++){
//            path.add(arr[i]);
//            dfs(arr,i+1);
//            path.remove(path.size()-1);
//        }
//
//
//    }
//}


import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int N = scanner.nextInt();
        int[] A = new int[N];
        int oddCount = 0;
        int evenCount = 0;
        int totalSum = 0;

        for (int i = 0; i < N; i++) {
            A[i] = scanner.nextInt();
            totalSum += A[i];
            if (A[i] % 2 != 0) {
                oddCount++;
            } else {
                evenCount++;
            }
        }

        if (totalSum % 2 != 0) {
            System.out.println(0);
            return;
        }

        long result;
        if (oddCount == 0) {
            // 所有元素都是偶数，任何非空真子集都满足
            result = (1L << N) ;
        } else {
            // 计算选择偶数个奇数的方案数：2^(k-1)
            // 偶数可以任意选：2^m
            // 减去空集和全集
            result = (1L << (oddCount - 1)) * (1L << evenCount) - 2;
        }

        System.out.println(result);
    }
}